# -*- coding: utf-8 -*- 
# @project : 《剑指offer》
# @Author : created by bensonrachel on 2021/6/11
# @File : 剪绳子（贪心+数论）.py

import math


class Solution(object):
    def maxProductAfterCutting(self, length):  # 贪心，数论
        """
        :type length: int
        :rtype: int
        """
        if (length <= 3): return 1 * (length - 1)#小于等于3的为一种情况
        if (length % 3 == 0): return int(math.pow(3, length // 3))#刚好是3的倍数，直接看有多少个3，让他们相乘
        if (length % 3 == 1): return int(math.pow(3, (length // 3) - 1) * 4)#余1的情况：不能承，拿最后一个3 出来，构成2*2，因为2*2>3*1
        if (length % 3 == 2): return int(math.pow(3, (length // 3)) * 2)#余2的情况，最后乘2就是

if __name__ == '__main__':
    a = Solution()
    b = a.maxProductAfterCutting(8)
    print(b)